home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E-,F-,G+,I+,L-,N-,O-,R-,S-,V+,X-}
- Unit Opciones;
-
- { Opciones de MDiskpro (c) Emilio David Diaus López 1994 }
- {
- 8. Opciones: Tratamiento De Las Opciones Del Programa
-
- Las Opciones Del Programa Se Manejan O Bien Por Medio De Una Caja
- De DiáLogo Donde Se Especifican Las Opciones O Por Medio De Un
- Fichero Llamado Mdisk.Ini Con El Siguiente Formato:
- [Opciones]
- Adaptador=0
- Unidad=0
- Copias=001
- Verificar=0
- En El Cual El Adaptador Puede Ser 0 O 1 Dependiendo De La
- ConfiguracióN Del Ordenador, Por Defecto Es El Adaptador 0.
- Unidad Puede Ser Cualquier NúMero De Unidad Entre 0 Y 25
- Correspondientes A Las Unidades Desde A: Hasta Z: Y Se Refiere
- A La Unidad Por Defecto Para Hacer Las Copias.
- Copias Son El NúMero De Copias Del Disquete Que Se Van a
- Realizar.
- Verificar Si Es Cero Es No Verificar La Copia Del Disquete
- Y En Caso De Que Tenga El Valor De Uno Si Verificar La Copia Del
- Disquete.
-
- En El Caso De Que Se Modifique Alguna OpcióN Del Programa
- AutomáTicamente Al Finalizar El Mismo Las Opciones Se Grabarán
- En El Fichero De ConfiguracióN .Ini.
- Utiliza Los DiáLogos EstáNdar De Turbo VisióN Para El Control De
- Las Opciones Que Son FáCilmente Modificables Por El Usuario.
- }
- Interface
- Uses Views,Dialogs,Mdhelp;
-
- { tipo de registro de opciones }
- Type Topciones=Record
- Adaptador,
- Verificar,
- Unidad:Word;
- Copias:String;
- End;
-
- { Registro de opciones y flag de modificación de estas }
-
- Var Opciones_Programa:Topciones;
- Modif_Op:Boolean;
-
- Procedure Muestra_Opciones;
-
- Procedure Lee_Opciones(S:String);
-
- Procedure Escribe_Opciones(S:String);
-
- Implementation
- Uses Dos,Emiapp,Objects;
-
- Function Fexists(Filename: String): Boolean;
- Var
- Sr: Searchrec;
- Begin
- {$I-}
- Findfirst(Filename,Anyfile,Sr);
- {$I+}
- Fexists := (Doserror = 0) And
- (Filename <> '');
- End;
-
- Procedure Lee_Opciones(S:String);
- Var F:Text;
- Linea:String;
- Aux:String;
- Codigo:Integer;
-
- { String a mayúsculas }
-
- Procedure Upstr(Var S:String);
- Var B:Byte;
- Begin
- For B:=1 To Length(S) Do S[B]:=Upcase(S[B]);
- End;
-
- { Lee una línea del fichero }
- Procedure Leer_Linea;
- Begin
- If Not(Eof(F)) Then
- Readln(F,Linea);
- Upstr(Linea);
- End;
-
- Label Salida,Salida2;
- Begin
- Modif_Op:=False;
-
- { Opciones por defecto }
- With Opciones_Programa Do Begin
- Adaptador:=0;
- Verificar:=0;
- Unidad:=0;
- Copias:='001';
- End;
- Assign(F,S);
- {$I-}
- If Not(Fexists(S)) Then Goto Salida;
- Reset(F);
- Leer_Linea;
- If Linea<>'[OPCIONES]' Then Goto Salida;
- Leer_Linea;
- If Copy(Linea,1,10)<>'ADAPTADOR=' Then
- Goto Salida
- Else Begin
- Aux:=Copy(Linea,11,Length(Linea)-10);
- Val(Aux,Opciones_Programa.Adaptador,Codigo);
- End;
- If Not (Opciones_Programa.Adaptador In [0..1]) Then
- Opciones_Programa.Adaptador:=0;
- Leer_Linea;
- If Copy(Linea,1,7)<>'UNIDAD=' Then
- Goto Salida
- Else Begin
- Aux:=Copy(Linea,8,Length(Linea)-7);
- Val(Aux,Opciones_Programa.Unidad,Codigo);
- End;
- If Not (Opciones_Programa.Unidad In [0..25]) Then
- Opciones_Programa.Unidad:=0;
- Leer_Linea;
- If Copy(Linea,1,7)<>'COPIAS=' Then
- Goto Salida
- Else Begin
- Aux:=Copy(Linea,8,Length(Linea)-7);
- Opciones_Programa.Copias:=Aux;
- End;
- Leer_Linea;
- If Copy(Linea,1,10)<>'VERIFICAR=' Then
- Goto Salida
- Else Begin
- Aux:=Copy(Linea,11,Length(Linea)-10);
- Val(Aux,Opciones_Programa.Verificar,Codigo);
- End;
- If Opciones_Programa.Verificar>1 Then
- Opciones_Programa.Verificar:=1;
- Goto Salida2;
- Salida:
- Modif_Op:=True;
- Salida2:
- Close(F);
- End;
-
- Procedure Escribe_Opciones(S:String);
- Var F:Text;
- Aux:String;
- Begin
- Assign(F,S);
- Rewrite(F);
- With Opciones_Programa Do Begin
- Str(Adaptador,Aux);
- Writeln(F,'[opciones]');
- Writeln(F,'adaptador=',Aux);
- Str(Unidad,Aux);
- Writeln(F,'unidad=',Aux);
- Writeln(F,'copias=',Copias);
- Writeln(F,'verificar=',Chr(Ord('0')+Verificar));
- End;
- Close(F);
- End;
-
- Procedure Muestra_Opciones;
- Var
- Opdisco,Opad : Pview;
- Dialog: Pdialog;
- R: Trect;
- C: Word;
- Begin
- R.Assign(5, 3, 56, 16);
- Dialog := New(Pdialog, Init(R, 'Opciones de Disco'));
- With Dialog^ Do
- Begin
- Helpctx := Hcopciones;
- Options:=Options Or Ofcentered;
- R.Assign(28, 3,44,5);
- Opad:= New(Pradiobuttons, Init(R,
- Newsitem('~P~rimario',
- Newsitem('~S~ecundario',
- Nil))));
- Insert(Opad);
- Opad^.Getbounds(R);
- R.A.Y:=2;R.B.Y:=3;
- Dec(R.A.X,2);
- R.B.X:=R.A.X+23;
- Insert(New(Plabel, Init(R, 'A~d~aptador por defecto',Opad)));
- R.Assign(4, 3,21,5);
- Opdisco:= New(Pradiobuttons, Init(R,
- Newsitem('D~e~sactivada',
- Newsitem('A~c~tivada',
- Nil))));
- Insert(Opdisco);
- R.Assign(2, 2, 21,3);
- Insert(New(Plabel, Init(R, '~V~erificación',Opdisco)));
- R.Assign(4, 7,13,9);
- Opdisco:= New(Pradiobuttons, Init(R,
- Newsitem('~A~:',
- Newsitem('~B~:',
- Nil))));
- Insert(Opdisco);
- R.Assign(2, 6, 21,7);
- Insert(New(Plabel, Init(R, '~U~nidad por defecto',Opdisco)));
- R.Assign(28,7,33,8);
- Opdisco:=New(Pinputline,Init(R,3));
- Insert(Opdisco);
- R.Assign(26, 6, 48,7);
- Insert(New(Plabel, Init(R, '~N~úmero de copias',Opdisco)));
- R.Assign(15, 10, 25, 12);
- Insert(New(Pbutton, Init(R, '~O~k', Cmok, Bfdefault)));
- R.Assign(28, 10, 42, 12);
- Insert(New(Pbutton, Init(R, '~C~ancelar', Cmcancel, Bfnormal)));
- End;
- Dialog^.Setdata(Opciones_Programa);
- C := Desktop^.Execview(Dialog);
- If C <> Cmcancel Then Begin
- Dialog^.Getdata(Opciones_Programa);
- Modif_Op:=True;
- End;
- Dispose(Dialog, Done);
- End;
-
- End.
-